package com.gzx.bi.modular.goals.monthly.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gzx.bi.modular.goals.monthly.entity.GzxGoalsLineChartVo;
import com.gzx.bi.modular.goals.monthly.entity.bo.GzxMonthlyGoalsAddOrEditBo;
import com.gzx.bi.modular.goals.monthly.entity.bo.GzxMonthlyGoalsImportExcelBo;
import com.gzx.bi.modular.goals.monthly.entity.bo.GzxMonthlyGoalsQueryBo;
import com.gzx.bi.modular.goals.monthly.entity.bo.GzxMonthlyGoalsXxlEditBo;
import com.gzx.bi.modular.goals.monthly.entity.vo.GzxCommissionRatioListVo;
import com.gzx.bi.modular.goals.monthly.entity.vo.GzxMonthlyGoalsVo;

import java.util.List;

/**
 * @author zjt
 * @description
 * @since 2025/1/13 14:00
 */
public interface GzxMonthlyGoalsService {

    /**
     * 分页月度项目计划
     *
     * @param monthlyGoalsQueryBo
     * @return
     */
    Page<GzxMonthlyGoalsVo> pageList(GzxMonthlyGoalsQueryBo monthlyGoalsQueryBo);

    /**
     * 查询全部月度项目计划
     *
     * @return
     */
    List<GzxMonthlyGoalsVo> list(Integer belongingMonth);

    /**
     * 增加月度项目计划
     *
     * @param monthlyGoalsAddOrEditBo
     */
    void add(GzxMonthlyGoalsAddOrEditBo monthlyGoalsAddOrEditBo);

    /**
     * 修改月度项目计划
     *
     * @param monthlyGoalsAddOrEditBo
     */
    void edit(GzxMonthlyGoalsAddOrEditBo monthlyGoalsAddOrEditBo);

    /**
     * 修改汇总金额
     *
     * @param monthlyGoalsXxlEditBo
     */
    void modifyAchievementAmount(GzxMonthlyGoalsXxlEditBo monthlyGoalsXxlEditBo);

    /**
     * 同步上月1号截止上月今天的累计达成金额
     *
     * @param monthlyGoalsXxlEditBo
     */
    void modifyLastAmount(GzxMonthlyGoalsXxlEditBo monthlyGoalsXxlEditBo);

    /**
     * 导入月度项目计划
     *
     * @param monthlyGoalsImportExcelBoList
     */
    void importExcel(List<GzxMonthlyGoalsImportExcelBo> monthlyGoalsImportExcelBoList);

    /**
     * 获取折线图数据
     *
     * @param id
     * @return
     */
    List<GzxGoalsLineChartVo> getChartData(Long id);

    /**
     * 初始化本月的数据额
     */
    void initialize(Long id);

    /**
     * 添加佣金比例
     *
     * @param json
     */
    void addRatio(String json, Long id);

    /**
     * @param
     * @return
     */
    List<GzxCommissionRatioListVo> pageListRatio(GzxMonthlyGoalsAddOrEditBo monthlyGoalsAddOrEditBo);
}
